Python IO 模块
文件操作
打开文件
在 Python 中使用文件的关键函数是 open()
函数
open()
函数有两个参数:文件名和模式。
有四种打开文件的不同方法(模式):
"r"
- 读取 - 默认值。打开文件进行读取,如果文件不存在则报错。
"a"
- 追加 - 打开供追加的文件,如果不存在则创建该文件。
"w"
- 写入 - 打开文件进行写入,如果文件不存在则创建该文件。
"x"
- 创建 - 创建指定的文件,如果文件存在则返回错误。
此外,可以指定文件是应该作为二进制还是文本模式进行处理。
r+
- 在 r 的基础上增加了可写功能
w+
- 在 w 的基础上增加了可读功能
a+
- 在 a 的基础上增加了可读功能
"t"
- 文本 - 默认值。文本模式。
"b"
- 二进制 - 二进制模式(例如图像)。
实例:
f = open("demofile.txt")
# 等价于
f = open("demofile.txt", "rt")
文件 I/O 操作
# 打开一个文件
fo = open("foo.txt", "w")
print "文件名: ", fo.name
print "是否已关闭 : ", fo.closed
print "访问模式 : ", fo.mode
print "末尾是否强制加空格 : ", fo.softspace
file 类的 方法
方法 | 描述 |
---|---|
flush() | 刷新缓冲区数据,将缓冲区中的数据立刻写入文件 |
next() | 返回文件下一行,这个方法也是file对象实例可以被当做迭代器使用的原因 |
truncate([size]) | 截取文件中指定字节数的内容,并覆盖保存到文件中,如果不指定size参数则文件将被清空; Python2无返回值,Python3返回新文件的内容字节数 |
write(str) | 将字符串写入文件,没有返回值 |
writelines(sequence) | 向文件写入一个字符串或一个字符串列表,如果字符串列表中的元素需要换行要自己加入换行符 |
fileno() | 返回一个整型的文件描述符,可以用于一些底层IO操作上(如,os模块的read方法) |
isatty() | 判断文件是否被连接到一个虚拟终端,是则返回True,否则返回False |
关闭文件
# 关闭文件
f.close()
读取文件
需要先打开才能读取文件
f = open("demofile.txt", "r")
print(f.read())
# 读取不同编码的文件(例如下面这个文件就是 gbk 的)
# 使用 encoding 设置编码为 utf-8
print(open("./temp.txt", "r", encoding='UTF-8').read())
# 只读取部分
print(f.read(5)) # 只读取前 5个字符
# 读取文件中的一行
print(f.readline())
print(f.readline()) # 再调用一次就可以读取第二行了
# 遍历行(逐行读取整个文件)
f = open("demofile.txt", "r")
for x in f:
print(x)
# 关闭文件
f.close()
写入文件
在 open()
加上下面两个参数
"a"
- 追加 - 会追加到文件的末尾
"w"
- 写入 - 会覆盖任何已有的内容
f = open("demofile2.txt", "a")
f.write("Now the file has more content!")
f.close()
# 追加后,打开并读取该文件:
f = open("demofile2.txt", "r")
print(f.read())
# 不同编码的文件同理
f = open("./temp.txt", "a", encoding='UTF-8')
print(f.write('\n\n\n这是写入的内容!!!'))
创建文件
如需在 Python 中创建新文件,使用 open() 方法,并使用以下参数之一:
"x"
- 创建 - 将创建一个文件,如果文件存在则返回错误
"a"
- 追加 - 如果指定的文件不存在,将创建一个文件
"w"
- 写入 - 如果指定的文件不存在,将创建一个文件
# 创建名为 "myfile.txt" 的文件:
f = open("myfile.txt", "x")
删除文件
删除文件比较特殊,需要导入 OS 模块
import os
os.remove("demofile.txt")
# 先检查是否存在
import os
if os.path.exists("demofile.txt"):
os.remove("demofile.txt")
else:
print("The file does not exist")
# 删除文件夹(但是只能删除空的,所以有点鸡肋)
import os
os.rmdir("myfolder")
dir()
dir()
函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。
如果参数包含方法 __dir__()
,该方法将被调用。如果参数不包含 __dir__()
,该方法将最大限度地收集参数信息。
dir([object])
# 例如打印请求
print(dir(response))